using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using FiltronASP.Models.Validators;

namespace FiltronASP.Models
{
    /// <summary>
    /// Fragment klasy odpowiadajacy tabeli <code>Galleries</code>.
    /// </summary>
    [MetadataType(typeof(GalleryValidation))]
    public partial class Gallery
    {        
    }

    /// <summary>
    /// Klasa z walidacja dla niektorych danych klasy <code>Gallery</code>.
    /// </summary>
    public class GalleryValidation
    {

        [HiddenInput(DisplayValue = false)]
        public int gallery_id { get; set; }

        [Required(ErrorMessage = "Nazwa galerii jest wymagana.")]
        [StringLength(255, ErrorMessage = "Nazwa galerii nie powinna być dłuższa niż 255 znaków.")]
        [AlpaNumeric(ErrorMessage = "Nazwa galerii nie powinna zawierać znaków specjalnych.")]
        public string gallery_name { get; set; }

        [Required(ErrorMessage = "Alias galerii jest wymagany.")]
        [StringLength(255, ErrorMessage = "Alias galerii nie powinien być dłuższy niż 255 znaków.")]
        public string gallery_alias { get; set; }

        [Required(ErrorMessage = "Informacja na temat numeru porządkowego galerii jest wymagana.")]
        [NotNegativeNumber(ErrorMessage = "Wprowadzona wartość powinna być nieujemna.")]
        public string gallery_ordering { get; set; }

        [Required(ErrorMessage = "Informacja na temat publikacji galerii jest wymagana.")]
        public bool gallery_published { get; set; }

        [Required(ErrorMessage = "Informacja na temat modułu przypisanego do galerii jest wymagana.")]
        public Nullable<int> module_id { get; set; }

        [Required(ErrorMessage = "Informacja na temat wersji językowej galerii jest wymagana.")]
        public Nullable<int> language_id { get; set; }

        [Required(ErrorMessage = "Informacja na temat szablonu przypisanego do galerii jest wymagana.")]
        public Nullable<int> template_id { get; set; }

    }
}
